{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "CLSTM.ipynb",
      "provenance": [],
      "collapsed_sections": []
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "accelerator": "GPU"
  },
  "cells": [
    {
      "cell_type": "code",
      "metadata": {
        "id": "e4UIGRRZpBwJ",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "import pandas as pd\n",
        "import numpy as np"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "LtYRIaEuuVR8",
        "colab_type": "code",
        "outputId": "dc1d5aaf-2a8f-49bd-9ebc-dc96ee562619",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 122
        }
      },
      "source": [
        "from google.colab import drive\n",
        "drive.mount('/content/drive',force_remount=True)"
      ],
      "execution_count": 2,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Go to this URL in a browser: https://accounts.google.com/o/oauth2/auth?client_id=947318989803-6bn6qk8qdgf4n4g3pfee6491hc0brc4i.apps.googleusercontent.com&redirect_uri=urn%3aietf%3awg%3aoauth%3a2.0%3aoob&response_type=code&scope=email%20https%3a%2f%2fwww.googleapis.com%2fauth%2fdocs.test%20https%3a%2f%2fwww.googleapis.com%2fauth%2fdrive%20https%3a%2f%2fwww.googleapis.com%2fauth%2fdrive.photos.readonly%20https%3a%2f%2fwww.googleapis.com%2fauth%2fpeopleapi.readonly\n",
            "\n",
            "Enter your authorization code:\n",
            "··········\n",
            "Mounted at /content/drive\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Av6J7QX2Dumq",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "#function to convert dataframe to into 2d array\n",
        "def convert_2d(df_dup):\n",
        "    data_frame = pd.DataFrame()\n",
        "    for i in range(0, df_dup.shape[0]-59):\n",
        "        is_anomaly = False\n",
        "        mylist = []\n",
        "        for j in range(i, i+60):\n",
        "            mylist.append(df_dup['value'].iat[j])\n",
        "            if df_dup['is_anomaly'].iat[j] == 1:\n",
        "                is_anomaly = True\n",
        "        if is_anomaly:\n",
        "            mylist.append(1)\n",
        "        else:\n",
        "            mylist.append(0)\n",
        "        np_Array = np.array(mylist)\n",
        "        mylist = np_Array.T\n",
        "        data_frame = data_frame.append(pd.Series(mylist), ignore_index=True)\n",
        "    return data_frame;"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "aM4MqPsuP8cb",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 204
        },
        "outputId": "4424f540-7231-40f2-8cb7-3bdbddf7c2b1"
      },
      "source": [
        "#view of a sample of data\n",
        "df=pd.read_csv(\"/content/drive/My Drive/dataset/A1Benchmark/real_1.csv\")\n",
        "df.head()"
      ],
      "execution_count": 21,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>timestamp</th>\n",
              "      <th>value</th>\n",
              "      <th>is_anomaly</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>1</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>2</td>\n",
              "      <td>0.091758</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>3</td>\n",
              "      <td>0.172297</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>4</td>\n",
              "      <td>0.226219</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>5</td>\n",
              "      <td>0.176358</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "   timestamp     value  is_anomaly\n",
              "0          1  0.000000           0\n",
              "1          2  0.091758           0\n",
              "2          3  0.172297           0\n",
              "3          4  0.226219           0\n",
              "4          5  0.176358           0"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 21
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "rQU-kibIMXZ4",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "#for concatenating all the files and\n",
        "#Preprocessing the data\n",
        "from sklearn import preprocessing\n",
        "import glob\n",
        "path = r'/content/drive/My Drive/dataset/A1Benchmark' #set the path accordingly\n",
        "all_files=glob.glob(path+\"/*.csv\")\n",
        "\n",
        "dataset_conc=[]\n",
        "for filename in all_files:\n",
        "  df=pd.read_csv(filename,index_col=None,header=0)\n",
        "  df=df.replace(0,np.nan)\n",
        "  df=df.dropna(axis=0, how='any',subset=['value'])\n",
        "  df.value = preprocessing.normalize([df.value]).T\n",
        "  dataset_conc.append(convert_2d(df)) \n",
        "frame=pd.concat(dataset_conc,axis=0,ignore_index=True)\n"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "5wwWC29liiYZ",
        "colab_type": "code",
        "outputId": "2c89f044-fd11-429d-9a56-7769c43fab8c",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 295
        }
      },
      "source": [
        "import matplotlib.pyplot as plt\n",
        "plt.plot(df.timestamp,df.value)\n",
        "plt.xlabel(\"Timestamp\")\n",
        "plt.ylabel(\"NormalizedValue\")\n",
        "plt.title(\" Example plot of web traffic after preprocessing \")\n",
        "plt.show()"
      ],
      "execution_count": 5,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "4ZqPhFBL9UZ1",
        "colab_type": "code",
        "outputId": "2903e8b2-fb6f-4ef9-aff1-0fcf71180e15",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "from keras.models import Sequential\n",
        "from keras.layers import Dense,Reshape,Conv2D,Flatten,MaxPooling1D,Conv1D,LSTM\n",
        "from keras import optimizers"
      ],
      "execution_count": 6,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Using TensorFlow backend.\n"
          ],
          "name": "stderr"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "muJARzWyaSq1",
        "colab_type": "code",
        "outputId": "22265acd-3563-476f-87c5-035572e8eec7",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 459
        }
      },
      "source": [
        "#building a classifier\n",
        "model=Sequential()\n",
        "model.add(Conv1D(64, kernel_size=5, strides=1, padding='same', activation='tanh',input_shape=(60, 1)))\n",
        "model.add(MaxPooling1D(pool_size=2, strides=2))\n",
        "model.add(Conv1D(64, kernel_size=5, strides=1, padding='same', activation='tanh'))\n",
        "model.add(MaxPooling1D(pool_size=2, strides=2))\n",
        "model.add(Reshape((1,15*64)))\n",
        "model.add(LSTM(64, activation='tanh',return_sequences='False'))\n",
        "model.add(Flatten())\n",
        "model.add(Dense(32, activation='tanh'))\n",
        "model.add(Dense(2, activation='softmax'))\n",
        "model.compile(loss='binary_crossentropy', optimizer='adam',metrics=['accuracy'])\n",
        "model.summary()\n"
      ],
      "execution_count": 8,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Model: \"sequential_2\"\n",
            "_________________________________________________________________\n",
            "Layer (type)                 Output Shape              Param #   \n",
            "=================================================================\n",
            "conv1d_3 (Conv1D)            (None, 60, 64)            384       \n",
            "_________________________________________________________________\n",
            "max_pooling1d_3 (MaxPooling1 (None, 30, 64)            0         \n",
            "_________________________________________________________________\n",
            "conv1d_4 (Conv1D)            (None, 30, 64)            20544     \n",
            "_________________________________________________________________\n",
            "max_pooling1d_4 (MaxPooling1 (None, 15, 64)            0         \n",
            "_________________________________________________________________\n",
            "reshape_2 (Reshape)          (None, 1, 960)            0         \n",
            "_________________________________________________________________\n",
            "lstm_2 (LSTM)                (None, 1, 64)             262400    \n",
            "_________________________________________________________________\n",
            "flatten_2 (Flatten)          (None, 64)                0         \n",
            "_________________________________________________________________\n",
            "dense_3 (Dense)              (None, 32)                2080      \n",
            "_________________________________________________________________\n",
            "dense_4 (Dense)              (None, 2)                 66        \n",
            "=================================================================\n",
            "Total params: 285,474\n",
            "Trainable params: 285,474\n",
            "Non-trainable params: 0\n",
            "_________________________________________________________________\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "FSm1tx222vYa",
        "colab_type": "code",
        "outputId": "4fd25a66-9640-40c6-8b0b-76b1202f56ac",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 224
        }
      },
      "source": [
        "frame.head()"
      ],
      "execution_count": 9,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>0</th>\n",
              "      <th>1</th>\n",
              "      <th>2</th>\n",
              "      <th>3</th>\n",
              "      <th>4</th>\n",
              "      <th>5</th>\n",
              "      <th>6</th>\n",
              "      <th>7</th>\n",
              "      <th>8</th>\n",
              "      <th>9</th>\n",
              "      <th>10</th>\n",
              "      <th>11</th>\n",
              "      <th>12</th>\n",
              "      <th>13</th>\n",
              "      <th>14</th>\n",
              "      <th>15</th>\n",
              "      <th>16</th>\n",
              "      <th>17</th>\n",
              "      <th>18</th>\n",
              "      <th>19</th>\n",
              "      <th>20</th>\n",
              "      <th>21</th>\n",
              "      <th>22</th>\n",
              "      <th>23</th>\n",
              "      <th>24</th>\n",
              "      <th>25</th>\n",
              "      <th>26</th>\n",
              "      <th>27</th>\n",
              "      <th>28</th>\n",
              "      <th>29</th>\n",
              "      <th>30</th>\n",
              "      <th>31</th>\n",
              "      <th>32</th>\n",
              "      <th>33</th>\n",
              "      <th>34</th>\n",
              "      <th>35</th>\n",
              "      <th>36</th>\n",
              "      <th>37</th>\n",
              "      <th>38</th>\n",
              "      <th>39</th>\n",
              "      <th>40</th>\n",
              "      <th>41</th>\n",
              "      <th>42</th>\n",
              "      <th>43</th>\n",
              "      <th>44</th>\n",
              "      <th>45</th>\n",
              "      <th>46</th>\n",
              "      <th>47</th>\n",
              "      <th>48</th>\n",
              "      <th>49</th>\n",
              "      <th>50</th>\n",
              "      <th>51</th>\n",
              "      <th>52</th>\n",
              "      <th>53</th>\n",
              "      <th>54</th>\n",
              "      <th>55</th>\n",
              "      <th>56</th>\n",
              "      <th>57</th>\n",
              "      <th>58</th>\n",
              "      <th>59</th>\n",
              "      <th>60</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>0.035790</td>\n",
              "      <td>0.030838</td>\n",
              "      <td>0.031739</td>\n",
              "      <td>0.035565</td>\n",
              "      <td>0.032189</td>\n",
              "      <td>0.031739</td>\n",
              "      <td>0.034215</td>\n",
              "      <td>0.029037</td>\n",
              "      <td>0.034215</td>\n",
              "      <td>0.033314</td>\n",
              "      <td>0.026561</td>\n",
              "      <td>0.028587</td>\n",
              "      <td>0.027912</td>\n",
              "      <td>0.029713</td>\n",
              "      <td>0.027237</td>\n",
              "      <td>0.026786</td>\n",
              "      <td>0.027912</td>\n",
              "      <td>0.023410</td>\n",
              "      <td>0.029488</td>\n",
              "      <td>0.026111</td>\n",
              "      <td>0.029037</td>\n",
              "      <td>0.030388</td>\n",
              "      <td>0.031739</td>\n",
              "      <td>0.030613</td>\n",
              "      <td>0.027687</td>\n",
              "      <td>0.028137</td>\n",
              "      <td>0.032639</td>\n",
              "      <td>0.026111</td>\n",
              "      <td>0.031514</td>\n",
              "      <td>0.029488</td>\n",
              "      <td>0.024761</td>\n",
              "      <td>0.025886</td>\n",
              "      <td>0.028362</td>\n",
              "      <td>0.028812</td>\n",
              "      <td>0.025886</td>\n",
              "      <td>0.026111</td>\n",
              "      <td>0.027462</td>\n",
              "      <td>0.029263</td>\n",
              "      <td>0.026336</td>\n",
              "      <td>0.027012</td>\n",
              "      <td>0.024085</td>\n",
              "      <td>0.022960</td>\n",
              "      <td>0.023410</td>\n",
              "      <td>0.024310</td>\n",
              "      <td>0.022960</td>\n",
              "      <td>0.025661</td>\n",
              "      <td>0.025661</td>\n",
              "      <td>0.026111</td>\n",
              "      <td>0.021834</td>\n",
              "      <td>0.028137</td>\n",
              "      <td>0.024761</td>\n",
              "      <td>0.026786</td>\n",
              "      <td>0.025211</td>\n",
              "      <td>0.032414</td>\n",
              "      <td>0.028812</td>\n",
              "      <td>0.032864</td>\n",
              "      <td>0.029488</td>\n",
              "      <td>0.032414</td>\n",
              "      <td>0.029938</td>\n",
              "      <td>0.029713</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>0.030838</td>\n",
              "      <td>0.031739</td>\n",
              "      <td>0.035565</td>\n",
              "      <td>0.032189</td>\n",
              "      <td>0.031739</td>\n",
              "      <td>0.034215</td>\n",
              "      <td>0.029037</td>\n",
              "      <td>0.034215</td>\n",
              "      <td>0.033314</td>\n",
              "      <td>0.026561</td>\n",
              "      <td>0.028587</td>\n",
              "      <td>0.027912</td>\n",
              "      <td>0.029713</td>\n",
              "      <td>0.027237</td>\n",
              "      <td>0.026786</td>\n",
              "      <td>0.027912</td>\n",
              "      <td>0.023410</td>\n",
              "      <td>0.029488</td>\n",
              "      <td>0.026111</td>\n",
              "      <td>0.029037</td>\n",
              "      <td>0.030388</td>\n",
              "      <td>0.031739</td>\n",
              "      <td>0.030613</td>\n",
              "      <td>0.027687</td>\n",
              "      <td>0.028137</td>\n",
              "      <td>0.032639</td>\n",
              "      <td>0.026111</td>\n",
              "      <td>0.031514</td>\n",
              "      <td>0.029488</td>\n",
              "      <td>0.024761</td>\n",
              "      <td>0.025886</td>\n",
              "      <td>0.028362</td>\n",
              "      <td>0.028812</td>\n",
              "      <td>0.025886</td>\n",
              "      <td>0.026111</td>\n",
              "      <td>0.027462</td>\n",
              "      <td>0.029263</td>\n",
              "      <td>0.026336</td>\n",
              "      <td>0.027012</td>\n",
              "      <td>0.024085</td>\n",
              "      <td>0.022960</td>\n",
              "      <td>0.023410</td>\n",
              "      <td>0.024310</td>\n",
              "      <td>0.022960</td>\n",
              "      <td>0.025661</td>\n",
              "      <td>0.025661</td>\n",
              "      <td>0.026111</td>\n",
              "      <td>0.021834</td>\n",
              "      <td>0.028137</td>\n",
              "      <td>0.024761</td>\n",
              "      <td>0.026786</td>\n",
              "      <td>0.025211</td>\n",
              "      <td>0.032414</td>\n",
              "      <td>0.028812</td>\n",
              "      <td>0.032864</td>\n",
              "      <td>0.029488</td>\n",
              "      <td>0.032414</td>\n",
              "      <td>0.029938</td>\n",
              "      <td>0.029713</td>\n",
              "      <td>0.029938</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>0.031739</td>\n",
              "      <td>0.035565</td>\n",
              "      <td>0.032189</td>\n",
              "      <td>0.031739</td>\n",
              "      <td>0.034215</td>\n",
              "      <td>0.029037</td>\n",
              "      <td>0.034215</td>\n",
              "      <td>0.033314</td>\n",
              "      <td>0.026561</td>\n",
              "      <td>0.028587</td>\n",
              "      <td>0.027912</td>\n",
              "      <td>0.029713</td>\n",
              "      <td>0.027237</td>\n",
              "      <td>0.026786</td>\n",
              "      <td>0.027912</td>\n",
              "      <td>0.023410</td>\n",
              "      <td>0.029488</td>\n",
              "      <td>0.026111</td>\n",
              "      <td>0.029037</td>\n",
              "      <td>0.030388</td>\n",
              "      <td>0.031739</td>\n",
              "      <td>0.030613</td>\n",
              "      <td>0.027687</td>\n",
              "      <td>0.028137</td>\n",
              "      <td>0.032639</td>\n",
              "      <td>0.026111</td>\n",
              "      <td>0.031514</td>\n",
              "      <td>0.029488</td>\n",
              "      <td>0.024761</td>\n",
              "      <td>0.025886</td>\n",
              "      <td>0.028362</td>\n",
              "      <td>0.028812</td>\n",
              "      <td>0.025886</td>\n",
              "      <td>0.026111</td>\n",
              "      <td>0.027462</td>\n",
              "      <td>0.029263</td>\n",
              "      <td>0.026336</td>\n",
              "      <td>0.027012</td>\n",
              "      <td>0.024085</td>\n",
              "      <td>0.022960</td>\n",
              "      <td>0.023410</td>\n",
              "      <td>0.024310</td>\n",
              "      <td>0.022960</td>\n",
              "      <td>0.025661</td>\n",
              "      <td>0.025661</td>\n",
              "      <td>0.026111</td>\n",
              "      <td>0.021834</td>\n",
              "      <td>0.028137</td>\n",
              "      <td>0.024761</td>\n",
              "      <td>0.026786</td>\n",
              "      <td>0.025211</td>\n",
              "      <td>0.032414</td>\n",
              "      <td>0.028812</td>\n",
              "      <td>0.032864</td>\n",
              "      <td>0.029488</td>\n",
              "      <td>0.032414</td>\n",
              "      <td>0.029938</td>\n",
              "      <td>0.029713</td>\n",
              "      <td>0.029938</td>\n",
              "      <td>0.029488</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>0.035565</td>\n",
              "      <td>0.032189</td>\n",
              "      <td>0.031739</td>\n",
              "      <td>0.034215</td>\n",
              "      <td>0.029037</td>\n",
              "      <td>0.034215</td>\n",
              "      <td>0.033314</td>\n",
              "      <td>0.026561</td>\n",
              "      <td>0.028587</td>\n",
              "      <td>0.027912</td>\n",
              "      <td>0.029713</td>\n",
              "      <td>0.027237</td>\n",
              "      <td>0.026786</td>\n",
              "      <td>0.027912</td>\n",
              "      <td>0.023410</td>\n",
              "      <td>0.029488</td>\n",
              "      <td>0.026111</td>\n",
              "      <td>0.029037</td>\n",
              "      <td>0.030388</td>\n",
              "      <td>0.031739</td>\n",
              "      <td>0.030613</td>\n",
              "      <td>0.027687</td>\n",
              "      <td>0.028137</td>\n",
              "      <td>0.032639</td>\n",
              "      <td>0.026111</td>\n",
              "      <td>0.031514</td>\n",
              "      <td>0.029488</td>\n",
              "      <td>0.024761</td>\n",
              "      <td>0.025886</td>\n",
              "      <td>0.028362</td>\n",
              "      <td>0.028812</td>\n",
              "      <td>0.025886</td>\n",
              "      <td>0.026111</td>\n",
              "      <td>0.027462</td>\n",
              "      <td>0.029263</td>\n",
              "      <td>0.026336</td>\n",
              "      <td>0.027012</td>\n",
              "      <td>0.024085</td>\n",
              "      <td>0.022960</td>\n",
              "      <td>0.023410</td>\n",
              "      <td>0.024310</td>\n",
              "      <td>0.022960</td>\n",
              "      <td>0.025661</td>\n",
              "      <td>0.025661</td>\n",
              "      <td>0.026111</td>\n",
              "      <td>0.021834</td>\n",
              "      <td>0.028137</td>\n",
              "      <td>0.024761</td>\n",
              "      <td>0.026786</td>\n",
              "      <td>0.025211</td>\n",
              "      <td>0.032414</td>\n",
              "      <td>0.028812</td>\n",
              "      <td>0.032864</td>\n",
              "      <td>0.029488</td>\n",
              "      <td>0.032414</td>\n",
              "      <td>0.029938</td>\n",
              "      <td>0.029713</td>\n",
              "      <td>0.029938</td>\n",
              "      <td>0.029488</td>\n",
              "      <td>0.027687</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>0.032189</td>\n",
              "      <td>0.031739</td>\n",
              "      <td>0.034215</td>\n",
              "      <td>0.029037</td>\n",
              "      <td>0.034215</td>\n",
              "      <td>0.033314</td>\n",
              "      <td>0.026561</td>\n",
              "      <td>0.028587</td>\n",
              "      <td>0.027912</td>\n",
              "      <td>0.029713</td>\n",
              "      <td>0.027237</td>\n",
              "      <td>0.026786</td>\n",
              "      <td>0.027912</td>\n",
              "      <td>0.023410</td>\n",
              "      <td>0.029488</td>\n",
              "      <td>0.026111</td>\n",
              "      <td>0.029037</td>\n",
              "      <td>0.030388</td>\n",
              "      <td>0.031739</td>\n",
              "      <td>0.030613</td>\n",
              "      <td>0.027687</td>\n",
              "      <td>0.028137</td>\n",
              "      <td>0.032639</td>\n",
              "      <td>0.026111</td>\n",
              "      <td>0.031514</td>\n",
              "      <td>0.029488</td>\n",
              "      <td>0.024761</td>\n",
              "      <td>0.025886</td>\n",
              "      <td>0.028362</td>\n",
              "      <td>0.028812</td>\n",
              "      <td>0.025886</td>\n",
              "      <td>0.026111</td>\n",
              "      <td>0.027462</td>\n",
              "      <td>0.029263</td>\n",
              "      <td>0.026336</td>\n",
              "      <td>0.027012</td>\n",
              "      <td>0.024085</td>\n",
              "      <td>0.022960</td>\n",
              "      <td>0.023410</td>\n",
              "      <td>0.024310</td>\n",
              "      <td>0.022960</td>\n",
              "      <td>0.025661</td>\n",
              "      <td>0.025661</td>\n",
              "      <td>0.026111</td>\n",
              "      <td>0.021834</td>\n",
              "      <td>0.028137</td>\n",
              "      <td>0.024761</td>\n",
              "      <td>0.026786</td>\n",
              "      <td>0.025211</td>\n",
              "      <td>0.032414</td>\n",
              "      <td>0.028812</td>\n",
              "      <td>0.032864</td>\n",
              "      <td>0.029488</td>\n",
              "      <td>0.032414</td>\n",
              "      <td>0.029938</td>\n",
              "      <td>0.029713</td>\n",
              "      <td>0.029938</td>\n",
              "      <td>0.029488</td>\n",
              "      <td>0.027687</td>\n",
              "      <td>0.029713</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "         0         1         2         3   ...        57        58        59   60\n",
              "0  0.035790  0.030838  0.031739  0.035565  ...  0.032414  0.029938  0.029713  0.0\n",
              "1  0.030838  0.031739  0.035565  0.032189  ...  0.029938  0.029713  0.029938  0.0\n",
              "2  0.031739  0.035565  0.032189  0.031739  ...  0.029713  0.029938  0.029488  0.0\n",
              "3  0.035565  0.032189  0.031739  0.034215  ...  0.029938  0.029488  0.027687  0.0\n",
              "4  0.032189  0.031739  0.034215  0.029037  ...  0.029488  0.027687  0.029713  0.0\n",
              "\n",
              "[5 rows x 61 columns]"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 9
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "17eGtbmlA6_W",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "#train test split\n",
        "y=frame.iloc[:, 60]\n",
        "X=frame.iloc[:, 0:60]\n",
        "X_train = X[:int(X.shape[0]*0.7)]\n",
        "X_test = X[int(X.shape[0]*0.7):]\n",
        "y_train = y[:int(X.shape[0]*0.7)]\n",
        "y_test = y[int(X.shape[0]*0.7):]"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "U2a-6A6Cncd0",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "#reshaping the data \n",
        "X_train=X_train.to_numpy()\n",
        "nrows, ncols = X_train.shape\n",
        "X_train = X_train.reshape(nrows, ncols, 1)\n",
        "\n",
        "X_test=X_test.to_numpy()\n",
        "nrows, ncols = X_test.shape\n",
        "X_test = X_test.reshape(nrows, ncols, 1)\n",
        "\n",
        "y_test = y_test.to_numpy()\n"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "XlDDkkDTrMFV",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "#converting y_train to categorical\n",
        "from keras.utils import to_categorical\n",
        "\n",
        "y_train = to_categorical(y_train)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "fi4zE8CKYyoL",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "#train the model\n",
        "history=model.fit(x=X_train, y=y_train, batch_size=512, epochs=500, verbose=1)\n"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "ASyCnI2IQ1SA",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 279
        },
        "outputId": "8ea84859-c5e1-4cf3-e588-5ea5cf6b6aa4"
      },
      "source": [
        "plt.plot(history.history['accuracy'])\n",
        "plt.xlabel('epoch')\n",
        "plt.ylabel('accuracy')\n",
        "plt.show()\n"
      ],
      "execution_count": 22,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEGCAYAAAB/+QKOAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nO3deXxU9b3/8dcnO0kIkIU1JGGXgCyKCAiC1gX1qkW7qHXfutf21tvqbate7V5/9tZeazdta2u1FVtrLVURcF9BNtl3CAGSkITs+/f3xzkZJmGAUTIMmbyfj0cezJxz5uRzhsn3M9/1mHMOERGRzuKiHYCIiJyYlCBERCQkJQgREQlJCUJEREJSghARkZASoh1AV8nOznYFBQXRDkNEpFtZtmxZmXMuJ9S+mEkQBQUFLF26NNphiIh0K2a243D71MQkIiIhRSxBmNmjZlZiZh8cZr+Z2YNmttnMVpnZKUH7rjOzTf7PdZGKUUREDi+SNYjfA3OPsP8CYJT/cyvwMICZZQJ3A6cDU4G7zaxfBOMUEZEQIpYgnHOvAuVHOORS4DHneRvoa2aDgPOBhc65cudcBbCQIycaERGJgGj2QQwBdgU9L/K3HW77IczsVjNbamZLS0tLIxaoiEhP1K07qZ1zv3bOTXHOTcnJCTlKS0REPqJoJojdwNCg57n+tsNtFxGR4yiaCeJZ4Fp/NNM04IBzbg/wAnCemfXzO6fP87eJiHQLNY0th2zbV9XAuj1VLNlQwpriA7S1OfYcqD/sOcprm3h9UxmbS6oBcM6xuugAB+qaIxZ3ZxGbKGdmTwBzgGwzK8IbmZQI4Jz7JbAAuBDYDNQBN/j7ys3sPuA9/1T3OueO1NktIj1MW5ujsr6Z/TWNjBrQ+7DHOedoaXMcqG8mKSGO1MR4qhtaOFDfTEF2Wofjnl1ZzHvbyxnaL5UrpubRp1ciAE0tbSzfWcFTy4q4dno+E3L7ArB8ZwWvbixj3Z4q4uON5TsqSE1OYPzgDJ5ZUcwfb5rKsOw0vvrkCjbsraaptY3GlrZDYlz89dkMz0lnW1ktz60s5q2t+6lramXFrkoA0pMTWH3PefzlvV3c8bfVmMGYAb25elo+V0/L78q39RAWKzcMmjJlitNMapHoqW9qpdU50pMT+OvSXXyw+wD3XDyOuDgD4KElm3lxzV6umJrHvMlDSEmMp6qhmfqmVqobmhnZ3yvol+2ooKqhmR1ltSz4YC9pSfHcccFYRg9I580t+/nr0l0sWL2H5lav7Lr/kxOpb2phZdEBpg3P4hOn5gJeEnlq2S6++fTqw8Z89bQ87r1kPN/91zoefWNbYPuInDQ+c3o+10zP5/KH32RV0QEAUpPimf+5GTy7sphfvrKlw7lmj85hw95q9lY1APDti8byr9V72FxSw/ThWaSnJOAc/H15xxbzwX1S+O+LxvLlJ5bjHJjBSQMz2FJaQ5OfUG4/bzQPLtrMpLy+jB3Ymz+85U1+PjW/H/M/Nx0z+2j/aYCZLXPOTQm5TwlC5PhraW3DzIiPM5xzh/yBl1Q3sKa4ii0lNdw0c9gh++/951p27K9l5qhsbjhjGHsPNPBf81dyxWl51DW18KPnN3DDGQV88ayRAFTUNvHSun2YGdvLarlx5jAy05IC56uobeLnizdjBl87dzS7yut4elkR180o4N1t5SzdUcFVU/M4ObdPhzh++9pWnnxvFxedPIjH3tpOXVMrw7LTWL/Xaxb58eUTmDoskze37Od//rkm8A06LSmey0/NZf6yIuqaWgF48MrJNDS18o2nV4V8z+684CSWbCjh7a1HblD4+ZWTmb+siE37qik+4BXWXz1nFOv3VLOyqJIROeks31lBbVMrKYlxPPCpSXzh8fe5fkYBvZLi2bSvmqKKetbvreba6fk89tYOPnlqLtOGZ/Hdf61lZP903ttewWWTh/D5OSN4b3sFs0ZlMzQzld2V9fxzZTE//Pd6Zo7M5vXNZfzPJeO4bkZBIL66phYee2sHo/qn8/bW/fzmtW2M7J/O5pIaXr59Dv0zkklN8hp3iirqmPmjJQAUDsrgz7ecTt/UJP65spgvP7EcgB9edjKpyQlcMnHwEd+Xw1GCEImgmsYW0pMTaGxpJSne69Z7c8t+ZozIorKumefX7OWiCYPISPGaLF7bVMp3n1uHGVx2yhB+8fIW/vmlmWSmJdHqHJf94k02l9QEzn/9jAIWry+horaJb8wdwxVT8xj1rX8H9o/qn84m//i+qYkM6tOLdXuqAPjs7OEMzEjhvufW0hb0p37SwN7MHp3Df543mgcWbuRXr2wN7Dtn7AAq65pYuqPikGv9ytkjyemdzNvbykmMM55ZUdxh/9DMXuwqr+fiiYNZuauSARnJlNU0sa2sFoB/3zaLZ1cW8/DL3rfvacMzSYyP47VNZVw0YRAb9lZTVtPI7NE5LFpXwsyR2Qzp14tHXt9GckIcrW2OmaOyOWlgBkUVdcSZ8ezKYgZkJLOvqrFDLMkJcTS2tDEiJ41FX5/TYV95bRMrd1Vyw++9lmwzWHfvXFIS4wGobWzhtO+9RF1TK3mZqbx8+xzi4owv/fl9nlu1B4AnbpnG9BFZIT8TZ/xwMbsrvf6Ft+48m0F9eoU8rqymkSnffQmAIX178cYdZ3fY75xj2J0LAHjqc9M5rSATgIbmVq7/3buBZDl+SAbPfnFmoLb2YRwpQcTMYn0iH8aGvdXkZ6Wys7yOUf3TD1tF31/TyNf+upINe6soHJTBNdPzWbHrALd9bBTxccYzy3fz9adWkpGSQFVDC2eOymbu+IF88+nV/O+nJ/H4Ozt4b3sFD7+8hUsnDWbe5CFc88i7gfN/f8F6ADbuq+YrTyyn1v82Hez3b24PPF6yoZRF60u81847me/844NAchgzoDcb9lVTWdfM184ZzSsbS/jH8mIaW1opHJzB/1wynmU7yvnzOztZv7ea9XuraWlzPPK617Tysysmsa+qIRDT5afksnFfNafm9+PqaXmc88CrPLh4M+Alokq/s/TLZ4/k5/72F786m/V7q5g0tC8/X7yZBxZuDMSemZbE2EEZnDSwNxeMH8jYQRkk+gn1i4+/z7/8gve+j4/nmmn5tLW5QIE3Oa8vX/qz94153uQhXDrJmxrV1ua47ZxR5GWmUlHbxNTvLwLgkomDuf28MZz5kyXMHT/wkPc0My2JmaOyOX1YJu9sK8c5AskBIC05gYsnDOYvS3dx1picQBynFWQGEkRBdmrIzwzAgIxkdlfWkxhvDOidctjj2vs5AIbnpB2yP/hzOdHv+wAv1sdvnsaEe15gcN9ePPXZGR8pORyNEoR0C+013X+u2sOWkho+P2cEVfXN7KqoY0tpLZ88NTfwx/TQks387o3tzB0/gJtnDqd3SgJ9U5MwoLqhhW37a/n4Q2+QnZ5EWU0TV04dyro91fzy6lPp3zuZdXurGDe4D1tLa/j+gvW8utGbhLmvqpQlG7zHu8rr2Fpaw9bSWlrbHFUNLbS2OZZsKOVAvVdwvrNtP8t2VJAQZ+wsr+PnizfzzjbvG99lpwzhnLEDeGb5bl5cu4/iyvpAcuiXmsjb//0xkhPiueaRd3htUxk3zxzGmuIqVhVVUlbTBMDUYf0YmZPOhn3VTB+excNXn8L8ZUVsK6vlxpkFxMfB/S96BfRNM4dxan4/Ts3vxy2zhrO1rJbrf/duIDk8duNUZo3KpqXN8czyYg7UN/P9y8aTnHCw0Lzv0nH8a/Uefnz5RPpnJLNpXw2/eW0rN88aTlNrG4WDMuiVFM/kPG9lnAtPHhRIEOeMHcC3LxoLeIXehKDCDmDi0D78a7VX8E4f7n0rDy7wxg7KCDw+fdjBb+1xccaInHQA+mccLIg/N3sEeVmpvH3nx8hOP9iUFiwxPo7Hbz6dk77zfMjO3tvPH8P+2kZumjk8sO3M0QfnWx2p4B/YJyXw75EK7sT4OFKT4qlramV49qEJAuDJW6dRXFlPUkLHQafxccar3ziLjF6JgUTb1ZQgJOre2FxGnBnTR2RRVFFHdUMLJw3szdo9VeSkJ9M/I4VHXt/Gr1/dSkm114zw4tp9gWYUgAEZKYzISePpZbv56UteofSnt3fyp7d3Bo6ZOiyTd7eVc2q+V4C1F7RPvOtN3L/x9+8xY0QWv319G3++5XSu+s07AGSnJzF6QG/e3LI/cK7gjsZ/fWUmQ/r2orGljbPuf5n3d1Z2OO8Dn5rIV/+yAoB3t5Uza1Q2D3xqEgBnjenP2Lue562tB899zyXjAgVzgl+4jBnYm9KaxsBxmWlJDMtO56HPTOZPb+/k2xeNJSE+jptnHSzMhvsFJ9ChicPMK1Q/ccpQfvrSRiYO7Rso+BLjjac+N52G5tYOyQHgmukFXDO9IPD85Nw+PHjlZADuvGAsnY3sn052ejJlNY38/MrJ9EqKP+SYdrNG5QBezSVUQVmQdXBbe+Ebyp9vOZ2ahhYKB2cc9ViAhPg41t03N/A+B8vpncxvrzutw7ZhQbEdqeBvf78zU0Mnp2DtZxmaGbpGMm146GYsgKz05KOe/1goQUjENbW00dDSSkOTV+gkJ8aRnBCHmfHAwo08uGgTfXol8uo3zgp0yLV/u09NiueJW6bx+Ds7A8nBjA7JAeDpZUXsq2oIfEMP5V1/37IdFZxbOIA+vRJJSYwLJJGtZTWs9c8b3Cb/7YsK+fjkITz6+jaW7ihnweq9gDf88IYzChg3+GDH7W+vncL8ZUUkJ8bzxLveec8pHMDTn5/B5Q+/CcCZow5+C+2VFE9aUnzgnP/44hlMHHrw2/WZo3NYsqGUcYP7sHFfdWD7C189k/g4Y2T/3txzybiQ1xtcmA0KUVDOmzyEBxdv4j/PHd1he1pyAmnJXVM0LLhtJnFmR0wO4PWJtAtV8MbHGd+YO+aw37LbzRiR/aFj/LDfvhd+7cyQw1WDnVs4gEde38b2/XVHPV97zXFI39D9FNGkBCHHrKW1jdqmVvr0SmTJ+hL+/cEefvyJiYF9Z93/Mrsr6+mVGE99cytx5hW6180o4OGXNzN2UAbr9lTx1SeXB85ZVtPEjWcM49E3tvH0+0Xs2F9LQVYqew408NJ/zmZzSQ0DMlK48MHXAPig+ABbS2u58Yxh9M9Ipry2ibnjB1JS1cDn/vT+ITHffXEhuf1SqW1sYfG6Ej5/1khOyevLE+/uZE1xFa/4zUrTh2dx0YRBANw4cxg3zhzGyXe/QFycseKucw/pu5gxMpsZI7NpaW0jo1cC5xUOJD05gVPz+zFpaF9W7Krkcn8YZrv2AvHU/H6cPKTjKKHrZxRw9kn9yc9K480tBwv5wzWbBBsRVIMI9U06LyuVLd+/8KjnORb9j9AME8zMeP6rswKd/KF8Yc7IrgrrmBxp3kW704dlcsnEwVx48qH9H4czpJ8ShJzg2tocW8tqGdk/vcP22sYW/m/JZp7/YC93XnAS543zPvhvbdnPl59YTlVDM3PHDeTZld6oljNGZnu1hYS4wGiO+uZWZo3K5v0dFazdU8XeqgaaWx1XT8vjR/9eH2jfB0hJjOOuiwt5atkuVuyqpM3BXRcXMmd0f+LiLFAd3/7Di/jcH5fx/BrvG/i5hQM6jCypazo4o/XTU4by9fNHk5IYHxhRlJacwBt3nB0o6L/78ZPZXlbLnPtfBuDb/zH2kG+Yr3/zbOLiOOLY84T4uEOaXX5/w2mYWYeOSfD6RYAOcwbamRn5fvNKTm+vOaF/7+Swxr0nJcQxuE8KxQcajtrUciI4aWDG0Q/qJsws0PwWrsGqQciJ7tv/+IA/v7OTv352OlOHZQa2L1i9JzA08acvbeKsk/pjwJW/eTtwTHtyALjtSa/NPXisPcAfbzqdeb94gw92H+CMHy4GvPbl7PRkqhpaOPuk/ixeX8LwbC9BpScnsGmfN0ont19qyOaHzKBv02MGdvx2l5qUwNXT8pgxIpsLTx4U8po7F7YF2WmcOTqHVzeWkheiXbhPauIh28LR9zDt0VlpSeyvbWLc4CMXkHNG9+fa6fncNHNY2L/z2S/PZMXOysC4ejnxmIFz3ufgRKNPTQ/U5g+IDy5sf/z8el5at4+NfmH8qV+9xU8/PZF5k73mkLe27CcrLYmbZw3nR8+v55tPr6J9Cs2VU/PYWlrDO9vKOwx5BG+8ebtT8ry29cF9egVGrADkZabyiSm5/Pj5DXx/3sk8t6qY8/0aSmpSPHv8yU6h2tEBsv0/rKy0pEMSEni1gg/rOxeN5fUxOfRO+WjJ4MN47iszqW1sOeowxT6pidx76fgPde7s9GTOKRxwLOFJhD1/25ls3Fd9TLOhI0UJoocor23iqt+8zffmjednizZTVt3IdTPyOWtMf9KSE/jNa1tpbnV8c+5JlFY38ugb2/j+gvVs2FvDzJHZLNlQwoyR2Xz2zOEs31nB3973RvGcMTKLuy8u5IGFG3lnWzlnjMzm1U1lZKQksHxnJTWNLXx/3slkpiUxpcAbPdS5oB/UJ4XPnTmCa6cXkJ6c0GEkTrrfWZqRknDYwrp9JEfuYUaBfBSjBvQOq625KxxuEpX0DGMG9j6k5nuiUIKIUe3LN9Q1tVDd0MKidSWs31vN5Q+/FTjmm0+v5uOTBnPhyYNobnX8+ZbTA6NAMtMSuf/FjfzylS388pUtJMQZX5wzkrg442vnjuadbeV8/bzRXOsPe/z6eaOZWpDJ6cMyeeYLMzALvYQEwKCgttZHrptCgt/Gnx5i5Ex708iR2mdTEr3X556Abbgi3ZkSRAz6wYJ1/H35bhZ+bTazfryY1jbHjJEHh/8VDsoIDOd8ZkVxYGz9KXkHb/1d0Gk44YCMlMDY8rGDMlj+nXM7NIkkJ8Qf0pRxuCrz6UF9Gx8be+Tmj7Rkb3jk4ZqX4OBImTljdNMoka6kBNENldc2UVxZT+GgDBavL2HmqOwOywT86lVvDP/Ee18MbFu4dh/gjTd//ObTefr9IpbtqODfH+xlX1Uj2enJHc4RPDEJvDV9gh3LtP7xQ/rw009PpFfi0T9+7ePxjzRccs6YHJ778syjdvKKyIejBNENzfvFG+zYX8cpeX15f2clV07NY3tZLauKKjl/3MDAqIh27esE3XjGMO66uBDAXx5hM//+oH3SV8eJTHlZB9vzV91zHr27aOJU4Bom5x79ICDFn83bP+PwM0bNjPGd5g+IyLFTgjjBvbm5jHufW8vkvH5MGtqHT5+Wxw5/dubBJR0OLifxN38JiJ9fOZmaxhb6pSZx/4sbqGqoYWhmxzb6MUGdsE2dZoZmpCTSOyWBa6fnB+YMRENjizfLtH0OgIgcP9G85ah08sbmMnaV17FsR0WgYFy4bh/r91bzxLs7+ebTq9lSWtPhNd/9+MFhj9+68ODErKnDMrlyah5zxw8k1V/moPNU/o+NHcDDnzkFIOTSAavvOZ//Ov+krrm4j6h9GYKsNCUIkeNNCeIE0dbmuOWxpVz127e5/OE3ue+5tQCUVjeSkZLA/M9NB+CG373X4XWfmjKUvMxUvvKxUR0mUA0IWtmy0F8JMzvEt/A5Y/p75z2joEuvp6u0z4ROT1FlV+R401/dCWJ3ZT11Ta3UlXvLUixZ7y8rXVHPhNy+TCnI5D8mDOK5VXvonZxAtX9T9KSEOF75rzmBEUM/u2JSh+QAcPfF45g+IovJQzsusQzeYnGbvndByNUsTwSD/TkCORFetVJEDqUEcYJobzpqX9Bud2U9335mNSt3VXLl1KGAd+/dU/P7MSInnVc2ljJrlDd0NXg4afuNVIL1SooPub1dpNaS7wr3XDKO88YNDAyxFZHjRwkiypxzlNc2saXUuyXjXz47jYS4OOYvKwrcRL19yGlKYjw3nOE1IwXfuCSWpSUncK6WihCJCiWIKCmurOfqR95h9ugcfvfGdrLTk8jPSuXkIX0wM+4aXMhlpwxh/d5qLghxy0QRkUhTgoiSvy/fzdbSWrb6NYeymibuu3R8h+ai8UP6aHy/iETNidv4HOPa73PcbvbonJA3VxcRiRYliCioqG1i6Y6KwOzkvqmJ/O76007I5X5FpOdSgjjOmlvbOPMnS2htc4FlreuaWo9pbSMRkUhQgjjOVu8+QHVDC3PG5PDxyYOBQ5e5EBE5EaiT+jjZVlbLI69v5U9ve+sm/eQTEwN3Pzt/nIZxisiJRwniOPnDm9sDyWFibp/A4nNv3nF2yNtkiohEmxLEcbLXv6/yc1+eydhBB2cFH+lOaSIi0aQEcZxsK6vlnLEDNK9BRLoNdVIfB21tjm37axmek3b0g0VEThBKEMfB1rJamlraGJmTHu1QRETCFtEEYWZzzWyDmW02sztC7M83s0VmtsrMXjaz3KB9PzazNWa2zswetG46i8w5x7Id5QCckt8vytGIiIQvYn0QZhYPPAScCxQB75nZs865tUGH3Q885pz7g5mdDfwAuMbMZgBnABP8414HZgMvRyreSLn4/17ng91V9E1NZHi2mphEpPuIZA1iKrDZObfVOdcEPAlc2umYQmCx/3hJ0H4HpABJQDKQCOyLYKwR0dTSxge7qwDvzm+aLS0i3UkkE8QQYFfQ8yJ/W7CVwGX+43lAbzPLcs69hZcw9vg/Lzjn1nX+BWZ2q5ktNbOlpaWlnXdHXfvQ1rNP6s9/nT8mytGIiHw40e6kvh2YbWbL8ZqQdgOtZjYSGAvk4iWVs81sVucXO+d+7Zyb4pybkpNz4t1Ap6iiDoCbZw47oe/aJiISSiTnQewGhgY9z/W3BTjnivFrEGaWDlzunKs0s1uAt51zNf6+fwPTgdciGG+XK6r07i+d2y81ypGIiHx4kfxa+x4wysyGmVkScAXwbPABZpZtZu0x3Ak86j/eiVezSDCzRLzaxSFNTCe6oop6zGBgn5RohyIi8qFFLEE451qALwEv4BXuf3XOrTGze83sEv+wOcAGM9sIDAC+52+fD2wBVuP1U6x0zv0zUrFGyu6KegZmpJCUoOYlEel+IrrUhnNuAbCg07a7gh7Px0sGnV/XCnw2krEdD0UVdQzRWksi0k3pq20E7a6sJ7efEoSIdE9KEBHS0tpGUUU9Q5QgRKSbUoKIkDv/thqA/EzNnhaR7kkJIkJWFR1gUJ8ULpk0ONqhiIh8JEoQEVJ8oJ7zCgeQkhgf7VBERD4SJYgIqG5oprqhhUEawSQi3ZgSRATs8ddgGqQJciLSjSlBRECxv8SG7jctIt2ZEkQEFFV4CUKT5ESkO1OCiICd5XUkJ8QxMENNTCLSfSlBRMD2slryMlN1gyAR6daUICJgx/468rM0QU5EujcliC7W2ubYvr+WgizdA0JEujcliC62rayGxpY2xg7KiHYoIiLHRAmii60prgJg3BAlCBHp3pQgutjaPVUkxccxIic92qGIiBwTJYgutq20lrysVBLj9daKSPemUqyL7SyvUwe1iMQEJYgu5Jxjx/468nQPCBGJAUoQXai0upH65lbyVYMQkRigBNGF2ldx1SJ9IhILlCC6UEVdEwCZaYlRjkRE5NgpQXShyrpmAPqmJkU5EhGRY6cE0YXaaxD9lCBEJAYoQXShirpmzKBPLzUxiUj3pwTRhSrrmshISSRey3yLSAxQguhCFXXN9EtV7UFEYoMSRBeqrGtSB7WIxAwliC5UXttEZpoShIjEBiWILlRZ10xfNTGJSIxQguhCFXVNGuIqIjFDCaKLNLa0UtfUqk5qEYkZEU0QZjbXzDaY2WYzuyPE/nwzW2Rmq8zsZTPLDdqXZ2Yvmtk6M1trZgWRjPVYaRa1iMSaiCUIM4sHHgIuAAqBK82ssNNh9wOPOecmAPcCPwja9xjwE+fcWGAqUBKpWLuCZlGLSKyJZA1iKrDZObfVOdcEPAlc2umYQmCx/3hJ+34/kSQ45xYCOOdqnHN1EYz1mFXUejUINTGJSKwIK0GY2d/M7CIz+zAJZQiwK+h5kb8t2ErgMv/xPKC3mWUBo4FK//cuN7Of+DWSE1alX4NQE5OIxIpwC/xfAFcBm8zsh2Y2pot+/+3AbDNbDswGdgOtQAIwy99/GjAcuL7zi83sVjNbamZLS0tLuyikj6bC74Pop6W+RSRGhJUgnHMvOec+A5wCbAdeMrM3zewGMztcibgbGBr0PNffFnzeYufcZc65ycC3/G2VeLWNFX7zVAvwjP+7O8f1a+fcFOfclJycnHAuJWLUByEisSbsJiO/6ed64GZgOfAzvEJ74WFe8h4wysyGmVkScAXwbKdzZgc1W90JPBr02r5m1l7qnw2sDTfWaKiobSI1KZ6UxBO6JUxEJGzh9kH8HXgNSAUuds5d4pz7i3Puy0B6qNf43/y/BLwArAP+6pxbY2b3mtkl/mFzgA1mthEYAHzPf20rXvPSIjNbDRjwm494jcdFuSbJiUiMSQjzuAedc0tC7XDOTTnci5xzC4AFnbbdFfR4PjD/MK9dCEwIM76oq6htUv+DiMSUcJuYCs2sb/sTM+tnZl+IUEzdkrfUt2oQIhI7wk0Qt/idxwA45yqAWyITUvekdZhEJNaEmyDizSxwmzR/ToJKwyAVWupbRGJMuH0QzwN/MbNf+c8/628ToLm1jaqGFtUgRCSmhJsgvomXFD7vP18I/DYiEXVDlZokJyIxKKwE4ZxrAx72f6STSk2SE5EYFFaCMLNReCutFgIp7dudc8MjFFe3Ul7rJQj1QYhILAm3k/p3eLWHFuAsvKW4/xSpoLqbisC9INTEJCKxI9wE0cs5twgw59wO59w9wEWRC6t7aV+HSTUIEYkl4XZSN/prJm0ysy/hLboXcomNnqi9iUl9ECISS8KtQdyGtw7TV4BTgauB6yIVVHdTWddEr0Qt1CciseWoNQh/UtynnXO3AzXADRGPqpvZX6NJciISe45ag/BXVp15HGLptooP1DOoT8rRDxQR6UbC7YNYbmbPAk8Bte0bnXN/i0hU3cyeAw1MzO179ANFRLqRcBNECrAf78Y97RzQ4xNEW5tjT2UDc8erBiEisSXcmdTqdziM/bVNNLW2MbhPr2iHIiLSpcKdSf07vBpDB865G7s8om6muLIeQH0QIhJzwm1iei7ocQowDyju+nC6n+37vS6ZYVpfw+MAABCaSURBVNlpUY5ERKRrhdvE9HTwczN7Ang9IhF1M1tKa4kzyMtKjXYoIiJdKtyJcp2NAvp3ZSDd1dbSGnL7pZKcoElyIhJbwu2DqKZjH8RevHtE9HhbS2sZnqPmJRGJPeE2MfWOdCDdUVubY1tZLdOGZ0U7FBGRLhdWE5OZzTOzPkHP+5rZxyMXVvewt6qB+uZW1SBEJCaF2wdxt3PuQPsT51wlcHdkQuo+tpZ6I5iUIEQkFoWbIEIdF+4Q2Zi1uaQagBE5WvlcRGJPuAliqZk9YGYj/J8HgGWRDOxEd6CumX+u2sPgPin0750c7XBERLpcuAniy0AT8BfgSaAB+GKkguoOvvH0SpbtqGDqsEzMLNrhiIh0uXBHMdUCd0Q4lm5lyfpSAG6eNTzKkYiIREa4o5gWmlnfoOf9zOyFyIV1Yttf00hTaxvfunAs44f0OfoLRES6oXCbmLL9kUsAOOcq6MEzqdfuqQJg3OCMKEciIhI54SaINjPLa39iZgWEWN21p9he1j68VaOXRCR2hTtU9VvA62b2CmDALODWiEV1gtuxv47khDiNXhKRmBZuJ/XzZjYFLyksB54B6iMZ2IlsR3kdeZmpxMVp9JKIxK5wO6lvBhYBXwduB/4I3BPG6+aa2QYz22xmh4yCMrN8M1tkZqvM7GUzy+20P8PMiszs/8KJ83jZsb+WfC3vLSIxLtw+iNuA04AdzrmzgMlA5ZFeYGbxwEPABUAhcKWZFXY67H7gMefcBOBe4Aed9t8HvBpmjMfFpn3VbNxXwyn5/aIdiohIRIWbIBqccw0AZpbsnFsPjDnKa6YCm51zW51zTXgT7C7tdEwhsNh/vCR4v5mdCgwAXgwzxuPiyfd2kRQfx6enDI12KCIiERVugijy50E8Ayw0s38AO47ymiHAruBz+NuCrQQu8x/PA3qbWZaZxQH/D68567DM7FYzW2pmS0tLS8O8lI/OOcfzH+xl1qhsstLVQS0isS2sBOGcm+ecq3TO3QN8B3gE6Irlvm8HZpvZcmA2sBtoBb4ALHDOFR0lrl8756Y456bk5OR0QThH9tSyInZX1nPJpMER/10iItH2oVdkdc69Euahu4Hgdphcf1vwuYrxaxBmlg5c7pyrNLPpwCwz+wKQDiSZWY1zLqrLfTz+9g7GDc7g4glKECIS+yK5ZPd7wCgzG4aXGK4Argo+wMyygXLnXBtwJ/AogHPuM0HHXA9MiXZyaGxpZe2eKm6aOVzDW0WkRwi3D+JDc861AF8CXgDWAX91zq0xs3vN7BL/sDnABjPbiNch/b1IxXOs1hZX0dzqmDRUay+JSM8Q0Zv+OOcWAAs6bbsr6PF8YP5RzvF74PcRCO9DWbq9AoDJeRreKiI9Q8RqELHmzS1lDM9JY0BGSrRDERE5LpQgwlDd0Mw728qZMSIr2qGIiBw3ShBheGb5buqaWvnkqZocJyI9hxJEGF7bVEZ+VioTh/Y9+sEiIjFCCSIMK4sqmazkICI9jBLEUew5UM++qkbVHkSkx1GCOIqVu7xFaycpQYhID6MEcRTLd1WSGG8U6v7TItLDKEEcgXOO1zeVUTgog+SE+GiHIyJyXClBHMGSDSWsKa7iqtPzoh2KiMhxpwRxBH97fzdZaUlcfkru0Q8WEYkxShCH0dzaxqJ1JcwdP5CEeL1NItLzqOQ7jA17q6lvbmW6ltcQkR5KCeIwlvvDWyfmaniriPRMShCHsXJXJVlpSeT26xXtUEREokIJ4jBW7Kpk0tC+mOnucSLSMylBhFDV0MyW0hotryEiPZoSRAhvb9mPc3CK7h4nIj2YEkQIz64sJjMtidOHZ0Y7FBGRqFGC6KS2sYWX1u3jgvEDSdT8BxHpwVQCdvLCmr00NLdxycTB0Q5FRCSqlCCCOOf41StbGdk/ndMK1LwkIj2bEkSQ0upGNuyr5sqpecTFaXiriPRsShBBdlXUATA8Jy3KkYiIRJ8SRJCd5V6CyMtMjXIkIiLRpwQRZOf+esxgSF8tryEiogQRZGd5HQMzUkhJ1N3jRESUIILsKq9jaD81L4mIgBJEBzvL6xiq/gcREUAJIqChuZW9VQ3qoBYR8SlB+HZX1gOQl6UOahERUIIIKKrwEkSu+iBERAAliICSqgYABvROiXIkIiInhogmCDOba2YbzGyzmd0RYn++mS0ys1Vm9rKZ5frbJ5nZW2a2xt/36UjGCVBS3QhA/4zkSP8qEZFuIWIJwszigYeAC4BC4EozK+x02P3AY865CcC9wA/87XXAtc65ccBc4H/NLKK3dyutbqR3SoLmQIiI+CJZg5gKbHbObXXONQFPApd2OqYQWOw/XtK+3zm30Tm3yX9cDJQAORGMlX1VDfTvrdqDiEi7SCaIIcCuoOdF/rZgK4HL/MfzgN5mlhV8gJlNBZKALZ1/gZndamZLzWxpaWnpMQVbUt1If/U/iIgERLuT+nZgtpktB2YDu4HW9p1mNgj4I3CDc66t84udc792zk1xzk3JyTm2Csb+mkZyVIMQEQlIiOC5dwNDg57n+tsC/OajywDMLB243DlX6T/PAP4FfMs593YE4wSgrqmVtGT1P4iItItkDeI9YJSZDTOzJOAK4NngA8ws28zaY7gTeNTfngT8Ha8De34EYwyob24lOUEJQkSkXcQShHOuBfgS8AKwDvirc26Nmd1rZpf4h80BNpjZRmAA8D1/+6eAM4HrzWyF/zMpUrECNDa30StJCUJEpF0km5hwzi0AFnTadlfQ4/nAITUE59yfgD9FMrZgrW2OptY2UlSDEBEJiHYn9QmhodnrF09J1NshItJOJSIHE4SamEREDlKCwOugBtTEJCISRAkCaGj2plgkq4lJRCRAJSJBTUxah0lEJEAJguBOaiUIEZF2ShAcbGJSghAROUgJAjUxiYiEogRB0CgmdVKLiASoRER9ECIioShBoAQhIhKKEgTBndR6O0RE2qlERDUIEZFQlCDwOqkT4ozEeL0dIiLtVCLiNTGp9iAi0pESBNDQ0qoEISLSiRIE0NDUqg5qEZFOVCqiGoSISChKEEB9U6uW2RAR6UQJgvZOar0VIiLBVCqiJiYRkVCUIPCamJQgREQ6UoIAGls0D0JEpDMlCLylNlIS9FaIiARTqYi31EavJNUgRESCKUHg1yDUxCQi0kGPTxDOOW+Yq5qYREQ66PGlYmOLfy8INTGJiHTQ4xNE4F4QCUoQIiLBenyCMIyLJgxiRP/0aIciInJCSYh2ANHWJzWRh646JdphiIiccHp8DUJEREJTghARkZAimiDMbK6ZbTCzzWZ2R4j9+Wa2yMxWmdnLZpYbtO86M9vk/1wXyThFRORQEUsQZhYPPARcABQCV5pZYafD7gcec85NAO4FfuC/NhO4GzgdmArcbWb9IhWriIgcKpI1iKnAZufcVudcE/AkcGmnYwqBxf7jJUH7zwcWOufKnXMVwEJgbgRjFRGRTiKZIIYAu4KeF/nbgq0ELvMfzwN6m1lWmK/FzG41s6VmtrS0tLTLAhcRkeh3Ut8OzDaz5cBsYDfQGu6LnXO/ds5Ncc5NycnJiVSMIiI9UiTnQewGhgY9z/W3BTjnivFrEGaWDlzunKs0s93AnE6vfTmCsYqISCfmnIvMic0SgI3Ax/ASw3vAVc65NUHHZAPlzrk2M/se0Oqcu8vvpF4GtM9gex841TlXfoTfVwrsOIaQs4GyY3h9d6Rr7hl0zT3DR73mfOdcyCaYiNUgnHMtZvYl4AUgHnjUObfGzO4FljrnnsWrJfzAzBzwKvBF/7XlZnYfXlIBuPdIycF/zTG1MZnZUufclGM5R3eja+4ZdM09QySuOaJLbTjnFgALOm27K+jxfGD+YV77KPBoJOMTEZHDi3YntYiInKCUIA76dbQDiAJdc8+ga+4ZuvyaI9ZJLSIi3ZtqECIiEpIShIiIhNTjE8TRVpztrszsUTMrMbMPgrZlmtlCf4Xche0LIJrnQf89WGVm3fIOSmY21MyWmNlaM1tjZrf522P2us0sxczeNbOV/jX/j799mJm941/bX8wsyd+e7D/f7O8viGb8x8LM4s1suZk95z+P6Ws2s+1mttrMVpjZUn9bRD/bPTpBhLnibHf1ew5d4PAOYJFzbhSwyH8O3vWP8n9uBR4+TjF2tRbg6865QmAa8EX//zOWr7sRONs5NxGYBMw1s2nAj4CfOudGAhXATf7xNwEV/vaf+sd1V7cB64Ke94RrPss5NylovkNkP9vOuR77A0wHXgh6fidwZ7Tj6sLrKwA+CHq+ARjkPx4EbPAf/wq4MtRx3fkH+Adwbk+5biAVb9WB0/Fm1Cb42wOfc7yJq9P9xwn+cRbt2D/Cteb6BeLZwHOA9YBr3g5kd9oW0c92j65BEOaqsTFkgHNuj/94LzDAfxxz74PfjDAZeIcYv26/qWUFUIK3NP4WoNI51+IfEnxdgWv29x8Aso5vxF3if4FvAG3+8yxi/5od8KKZLTOzW/1tEf1sR3QmtZy4nHPOX+Ik5vgLPz4NfNU5V2VmgX2xeN3OuVZgkpn1Bf4OnBTlkCLKzP4DKHHOLTOzOdGO5zia6ZzbbWb9gYVmtj54ZyQ+2z29BnHUFWdjzD4zGwTg/1vib4+Z98HMEvGSw+POub/5m2P+ugGcc5V4N96aDvT1F8yEjtcVuGZ/fx9g/3EO9VidAVxiZtvxbkR2NvAzYvuacc7t9v8twfsiMJUIf7Z7eoJ4Dxjlj35IAq4Ano1yTJH0LNB+f+/r8Nro27df6498mAYcCKq2dhvmVRUeAdY55x4I2hWz121mOX7NATPrhdfnsg4vUXzCP6zzNbe/F58AFju/kbq7cM7d6ZzLdc4V4P3NLnbOfYYYvmYzSzOz3u2PgfOAD4j0ZzvaHS/R/gEuxFuWfAvwrWjH04XX9QSwB2jGa3+8Ca/ddRGwCXgJyPSPNbzRXFuA1cCUaMf/Ea95Jl477Spghf9zYSxfNzABWO5f8wfAXf724cC7wGbgKSDZ357iP9/s7x8e7Ws4xuufAzwX69fsX9tK/2dNe1kV6c+2ltoQEZGQenoTk4iIHIYShIiIhKQEISIiISlBiIhISEoQIiISkhKEyAnAzOa0r0oqcqJQghARkZCUIEQ+BDO72r//wgoz+5W/UF6Nmf3Uvx/DIjPL8Y+dZGZv++vx/z1orf6RZvaSfw+H981shH/6dDObb2brzexxC15ESiQKlCBEwmRmY4FPA2c45yYBrcBngDRgqXNuHPAKcLf/kseAbzrnJuDNZm3f/jjwkPPu4TADb8Y7eKvPfhXv3iTD8dYcEokareYqEr6PAacC7/lf7nvhLY7WBvzFP+ZPwN/MrA/Q1zn3ir/9D8BT/no6Q5xzfwdwzjUA+Od71zlX5D9fgXc/j9cjf1kioSlBiITPgD845+7ssNHsO52O+6jr1zQGPW5Ff58SZWpiEgnfIuAT/nr87fcDzsf7O2pfRfQq4HXn3AGgwsxm+duvAV5xzlUDRWb2cf8cyWaWelyvQiRM+oYiEibn3Foz+zbeXb3i8FbK/SJQC0z195Xg9VOAt/zyL/0EsBW4wd9+DfArM7vXP8cnj+NliIRNq7mKHCMzq3HOpUc7DpGupiYmEREJSTUIEREJSTUIEREJSQlCRERCUoIQEZGQlCBERCQkJQgREQnp/wN3mX3VaYvsfQAAAABJRU5ErkJggg==\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "2O21se0iOJEE",
        "colab_type": "code",
        "outputId": "0ac59ee9-47b3-42bc-8a84-eb6847299352",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "  # list all data in history\n",
        "print(history.history.keys())"
      ],
      "execution_count": 14,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "dict_keys(['loss', 'accuracy'])\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Z5iY1H1PJRT7",
        "colab_type": "code",
        "outputId": "1221dfd0-8187-406a-f3de-86a52880ac26",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 282
        }
      },
      "source": [
        "plt.plot(history.history['loss'])\n",
        "plt.xlabel('epoch')\n",
        "plt.ylabel('loss')\n",
        "plt.show()"
      ],
      "execution_count": 15,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "21lbZghj02U7",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        " #predicting on test data\n",
        "y_pred=model.predict_classes(X_test)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "m3jDHAml2Cpu",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "#evaluate performance\n",
        "from sklearn.metrics import confusion_matrix, accuracy_score, precision_score, recall_score, f1_score\n",
        "\n",
        "Confusion_Matrix = confusion_matrix(y_test, y_pred)\n",
        "Accuracy = accuracy_score(y_test, y_pred)\n",
        "precision = precision_score(y_test, y_pred, average='binary')\n",
        "recall = recall_score(y_test, y_pred, average='binary')\n",
        "F1_Score = f1_score(y_test, y_pred, average='binary')"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "n2ser3QQxrTB",
        "colab_type": "code",
        "outputId": "9650abca-560e-4e41-d173-e35be7694793",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 136
        }
      },
      "source": [
        "print(\"Confusion_Matrix\")\n",
        "print(Confusion_Matrix)\n",
        "print(\"Accuracy \", Accuracy)\n",
        "print(\"Precision \", precision)\n",
        "print(\"recall \", recall)\n",
        "print(\"f1_score \", F1_Score)"
      ],
      "execution_count": 18,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Confusion_Matrix\n",
            "[[22955  1230]\n",
            " [  704  1729]]\n",
            "Accuracy  0.9273423998797806\n",
            "Precision  0.5843190266982089\n",
            "recall  0.7106452938758734\n",
            "f1_score  0.6413204747774481\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "UdxafLyg_31u",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        ""
      ],
      "execution_count": 0,
      "outputs": []
    }
  ]
}